package cn.tedu.sp03.service;

import cn.tedu.sp01.entity.User;
import cn.tedu.sp01.service.UserService;
import cn.tedu.web.util.JsonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import java.util.List;

@RefreshScope  //刷新到的新配置,可以重新注入到对象中
@Service
@Slf4j
public class UserServiceImpl implements UserService{

    //application.yml里的数据拿过来
    @Value("${sp.user-service.users}")

    private String userJson;
    @Override
    public User getUser(Integer userId) {
        log.info("获取用户ID UserID="+userId);
        //userJson -->List<User>    将JSON转化成后里面的类型
        List<User> users = JsonUtil.from(userJson, new TypeReference<List<User>>() {});//匿名内部类  继承的方法解决不能这样写的形式List<User>
        for (User user : users) {
            if (user.equals(userId)){
                return user;
            }
        }

        return new User(userId,"用户id: "+userId,"密码: "+userId);
    }

    @Override
    public void addScore(Integer userId, Integer score) {
        log.info("增加用户积分: "+userId+"score: "+score);
    }
}
